import cv2
import numpy as np

cap = cv2.VideoCapture(0)

cap.set(3, 1900)
cap.set(4, 1900)

flag = 1;  # 设置一个标志，用来输出视频信息
while (cap.isOpened()):  # 循环读取每一帧
    """
    函数名：cap.read()
    功  能：返回两个值
           先返回一个布尔值，如果视频读取正确，则为 True，如果错误，则为 False，也可用来判断是否到视频末尾
           再返回一个值，为每一帧的图像，该值是一个三维矩阵
           通用接收方法为：
           ret,frame = cap.read();
           这样 ret 存储布尔值，frame 存储图像
           若使用一个变量来接收两个值，如
           frame = cap.read()
           则 frame 为一个元组，原来使用 frame 处需更改为 frame[1]
    返回值：R1：布尔值
           R2：图像的三维矩阵
    """
    ret_flag, frame = cap.read()
    cv2.imshow("Capture_Test", frame)  # 窗口显示，显示名为 Capture_Test
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow("Gray", gray)
    flip = cv2.flip(frame, 1)
    cv2.imshow("flip", flip)

    k = cv2.waitKey(1) & 0xFF  # 每帧数据延时 1ms，延时不能为 0，否则读取的结果会是静态帧
    if k == ord('s'):  # 若检测到按键 ‘s’，打印字符串
        """
        函数名：cap.get( propId )
        功  能：查询视频的参数
        返回值：无
        参数一：查询的视频参数，其中部分值可以使用 cap.set() 进行修改
        """
        print(cap.get(3))
        print(cap.get(4))

    elif k == ord('q'):  # 若检测到按键 ‘q’，退出
        break

cap.release()  # 释放摄像头
cv2.destroyAllWindows()  # 删除建立的全部窗口
